#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include "stable.h"

class MainWindow : public QMainWindow
{
    Q_OBJECT
public:
    MainWindow();
public slots:
    void chooseBuceador();
    void showBuceador( const QString& usuario );
protected:
    void closeEvent( QCloseEvent* event );
    void resizeEvent( QResizeEvent* event );
private slots:
    void currentInmersionChanged( const QModelIndex& );
    void importReloj();
    void importInmersiones();
    void importMuestras();
    void toggleFullscreen();
    void eliminarInmersion();
    void sort( QAction* action );
    void inmersionesListToggle( bool visible );
    void inmersionesListDockToggle( bool visible );
    void inmersionDetallesDockToggle( bool visible );
    void mapaToggle( bool visible );
    void estadisticasToggle( bool visible );
private:
    void createActions();
    void createMenus();
    void createDocks();
    DataStore* _datastore;
    Buceador* _buceador;
    Inmersion* _currentInmersion;
    InmersionesModel* _inmersionesModel;
    EstadisticasModel* _estadisticasModel;
    InmersionesList* _inmersionesList;
    InmersionDetalles* _inmersionDetalles;
    InmersionGrafico* _inmersionGrafico;
    Login* _login;
    QStatusBar* _statusbar;
    QMenuBar* _menubar;
    QDockWidget* _inmersionesListDock;
    QDockWidget* _inmersionDetallesDock;
    QStackedWidget* _inmersionDetallesStack;
    QActionGroup* _verActions;
    QActionGroup* _sortActions;
    QAction* _salirAction;
    QAction* _importRelojAction;
    QAction* _importInmersionesAction;
    QAction* _importMuestrasAction;
    QAction* _chooseBuceadorAction;
    QAction* _fullscreenAction;
    QAction* _verEstadisticasAction;
    QAction* _verMapaToggleAction;
    QAction* _verProfundidadAction;
    QAction* _verTemperaturaAction;
    QAction* _verPresionAction;
    QAction* _verTasaCasAction;
    QAction* _inmersionesListToggleAction;
    QAction* _inmersionDetallesToggleAction;
    QAction* _sortInicioAscAction;
    QAction* _sortInicioDescAction;
    QAction* _sortSitioAscAction;
    QAction* _sortSitioDescAction;
    QAction* _sortDuracionAscAction;
    QAction* _sortDuracionDescAction;
    QAction* _sortHoraAscAction;
    QAction* _sortHoraDescAction;
    QAction* _eliminarAction;
    QMenu* _archivoMenu;
    QMenu* _verMenu;
    QMenu* _listviewMenu;
    QMenu* _ordenarMenu;
    QMenu* _inicioMenu;
    QMenu* _sitioMenu;
    QMenu* _duracionMenu;
    QMenu* _horaMenu;
};

#endif // MAINWINDOW_H
